package org.fuys.coder.domain.audit.service.policy.result.impl;

import org.fuys.coder.domain.audit.model.req.AuditTask;
import org.fuys.coder.domain.audit.model.res.AuditResult;
import org.fuys.coder.domain.audit.model.vo.AuditResultSuggestion;
import org.fuys.coder.domain.audit.model.vo.AuditReviewStatusVO;
import org.fuys.coder.domain.audit.respository.IAuditReviewRepository;
import org.fuys.coder.domain.audit.service.policy.result.AuditResultStrategy;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @projectName: fuys-low-coder
 * @package: org.fuys.coder.domain.audit.service.policy.result.impl
 * @className: ReviewStrategy
 * @author: WangJing
 * @description: 需要人工复审的策略
 * @date: 2024/6/22 17:38
 * @version: 1.0
 */
@Service("reviewStrategy")
public class ReviewStrategy implements AuditResultStrategy {

    @Resource
    private IAuditReviewRepository auditReviewRepository;

    @Override
    public void handleResult(AuditResult auditResult, AuditTask task) {
        //虽然审核成功之后是人生有梦各自精彩 但是审核失败考虑的就很少了 直接打入大牢
        //这里保证成功之后 将发送信息给用户收件箱 但是收件箱要和推送一起进行
        //TODO 收件箱完成设置
        if (auditResult.isFinish()) {
            auditReviewRepository.saveRecord(task.getIdType(),task.getOtherId(),
                    task.getUserId(),auditResult.getMsg(),null, AuditReviewStatusVO.ONGOING.getIndex());
        }else{
            //如果这个任务都没有完成 说明遇到了云服务问题 或者是网络波动 这时候需要通过人工审核拦截 防止出现大量不合规内容
            auditReviewRepository.saveRecord(task.getIdType(),task.getOtherId(),task.getUserId(),
                    "由于内容复杂 移交人工审核",null, AuditReviewStatusVO.ONGOING.getIndex());
        }
    }
}
